Semiconductor memory is widely used in various electronic devices such as cellular telephones, digital cameras, personal digital assistants, medical electronics, mobile computing devices, non-mobile computing devices and data servers. Semiconductor memory may comprise non-volatile memory or volatile memory. A non-volatile memory allows information to be stored and retained even when the non-volatile memory is not connected to a source of power (e.g., a battery). Examples of non-volatile memory include flash memory (e.g., NAND-type and NOR-type flash memory), Electrically Erasable Programmable Read-Only Memory (EEPROM), and others.
When a memory system is deployed in or connected to an electronic device (the host), the memory system can be used to program data, read data and/or erase data. It is important that once data is stored in a memory system, the data can be read back. Therefore, some memory systems will encode the data prior to programming using an error correction scheme. Subsequently, when reading the data, the memory system will decode the data and (hopefully) correct any errors found. If the number of errors is within the capabilities of the error correction scheme, then the memory system will decode the data and return the data error free to the host. If the number of errors is beyond the capabilities of the error correction scheme, then the memory system will report an error message to the host without returning any data to the host.